import CryptoJS from 'crypto-js'

/**
 * AES 加密（CBC 模式 + PKCS7 填充）
 * @param {string} plainText 明文
 * @param {string} key 密钥（16/24/32 字节）
 * @param {string} iv 初始化向量（16 字节）
 * @returns {string} Base64 编码的密文
 */
function aesEncrypt(plainText, key, iv) {
  // 将密钥和 IV 转换为 CryptoJS 支持的格式
  const keyBytes = CryptoJS.enc.Utf8.parse(key)
  const ivBytes = CryptoJS.enc.Utf8.parse(iv)

  // 加密
  const encrypted = CryptoJS.AES.encrypt(plainText, keyBytes, {
    iv: ivBytes,
    mode: CryptoJS.mode.CBC, // CBC 模式
    padding: CryptoJS.pad.Pkcs7 // PKCS7 填充
  })

  // 返回 Base64 编码的密文
  return encrypted.toString()
}

export default aesEncrypt
